package br.uvv.Dao;

import java.util.List;

import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Restrictions;
import org.primefaces.model.SortOrder;

import br.uvv.Model.Projeto;
import br.uvv.Util.DAOException;

@SuppressWarnings("unchecked")
public class ProjetoDAO extends DAO {

	private static final long serialVersionUID = 1644593689725160930L;

	public Projeto selecionar(Long id) throws DAOException  {
		return (Projeto) get(Projeto.class, id);
	}
	
	public List<Projeto> listar() throws DAOException{
		return (List<Projeto>) list(Projeto.class);
	}
	
	public void salvar(Projeto atorInstance) throws DAOException {
		save(atorInstance, atorInstance.getId());
	}
	
	public void remover(Projeto atorInstance) throws DAOException {
		delete(Projeto.class, atorInstance.getId());
	}
	
	public List<Projeto> listar(int first, int pageSize, String sortField, 
			SortOrder sortOrder, String nome) throws DAOException{
		Criterion[] filtros = { Restrictions.ilike("nome", "%" + nome + "%") };
		return (List<Projeto>) listPaginator(first, pageSize, sortField, sortOrder, Projeto.class, null, filtros);
	}
	
	public Integer count(String nome) throws DAOException {
		Criterion[] filtros = { Restrictions.ilike("nome", "%" + nome + "%") };
		return rowCount(Projeto.class, filtros);
	}

	public Integer countPorCliente(Long id) throws DAOException {
		Criterion[] filtros = { Restrictions.eq("cliente.id", id) };
		return rowCount(Projeto.class, filtros);
	}

	public List<Projeto> listar(int first, int pageSize, String sortField,
			SortOrder sortOrder, String varBuscaCodigo, String varBuscaProjeto,
			String varBuscaCliente) throws DAOException {
		return null;
	}

	public Integer count(String varBuscaCodigo, String varBuscaProjeto,
			String varBuscaCliente) throws DAOException {
		return 0;
	}
}
